package win.smartown.kotlin.grammar

/**
 * Created by smartown on 2017/6/4.
 * 使用值检查并自动转换
 */

/**
 * 使用is操作符检查一个表达式是否是某个类型的实例。如果对不可变的局部变量或属性进行了类型检查，就没必要进行明确转换
 */
fun getStringLength(arg: Any): Int? {
    if (arg is String) {
        //str将会在这个分支中自动转换为string类型
        return arg.length
    }
    //str在类型检查外仍然是Any类型
    return null
}

fun main(args: Array<String>) {
    fun printLength(any: Any) {
        val length = getStringLength(any)
        if (length == null) {
            println("$any is not string")
        } else {
            println("$any string length is $length")
        }
    }
    printLength("smartown")
    printLength(1)
    printLength(Any())
}
